Add back missing part of XenLinux acpi/boot.c.
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Wed, 31 Aug 2005 08:43:57 +0000 (08:43 +0000)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Wed, 31 Aug 2005 08:43:57 +0000 (08:43 +0000)
This fixes bug #76 (IRQ sharing fails under load).
Signed-off-by: Natasha Jarymowycz <natasha@us.ibm.com>
linux-2.6-xen-sparse/arch/xen/i386/kernel/acpi/boot.c

index bce4ef7ed46b2959b6c67b29bc4655a88eb1df2a..19e71d8d2b13536e2458ad551dde620a405b244e 100644 (file)
@@ -469,6 +469,18 @@ unsigned int acpi_register_gsi(u32 gsi, int edge_level, int active_high_low)
        unsigned int irq;
        unsigned int plat_gsi = gsi;
 
+#ifdef CONFIG_PCI
+       /*
+        * Make sure all (legacy) PCI IRQs are set as level-triggered.
+        */
+       if (acpi_irq_model == ACPI_IRQ_MODEL_PIC) {
+               extern void eisa_set_level_irq(unsigned int irq);
+
+               if (edge_level == ACPI_LEVEL_SENSITIVE)
+                               eisa_set_level_irq(gsi);
+       }
+#endif
+
 #ifdef CONFIG_X86_IO_APIC
        if (acpi_irq_model == ACPI_IRQ_MODEL_IOAPIC) {
                plat_gsi = mp_register_gsi(gsi, edge_level, active_high_low);